From 5ffa85e1f0e04fdda01550698b02876f7b535352 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 22 Nov 2004 17:07:41 +0000 Subject: [PATCH] Make the size of the arrow depend only on the font size, not on the child 2004-11-22 Matthias Clasen * gtk/gtkmenuitem.c (gtk_menu_item_paint): Make the size of the arrow depend only on the font size, not on the child allocation. (#131345, Morten Welinder) --- ChangeLog | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-6 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ gtk/gtkmenuitem.c | 17 ++++++++++++++--- 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1b82c3a556..a4d174569e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-11-22 Matthias Clasen + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Make the size of + the arrow depend only on the font size, not on the child + allocation. (#131345, Morten Welinder) + * configure.in: Require Pango 1.7.0 for PangoRenderer (#159061, Crispin Flowerday) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 1b82c3a556..a4d174569e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2004-11-22 Matthias Clasen + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Make the size of + the arrow depend only on the font size, not on the child + allocation. (#131345, Morten Welinder) + * configure.in: Require Pango 1.7.0 for PangoRenderer (#159061, Crispin Flowerday) diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 1b82c3a556..a4d174569e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,9 @@ 2004-11-22 Matthias Clasen + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Make the size of + the arrow depend only on the font size, not on the child + allocation. (#131345, Morten Welinder) + * configure.in: Require Pango 1.7.0 for PangoRenderer (#159061, Crispin Flowerday) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 1b82c3a556..a4d174569e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2004-11-22 Matthias Clasen + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Make the size of + the arrow depend only on the font size, not on the child + allocation. (#131345, Morten Welinder) + * configure.in: Require Pango 1.7.0 for PangoRenderer (#159061, Crispin Flowerday) diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 77e4c1362e..acbf562715 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -725,6 +725,10 @@ gtk_menu_item_paint (GtkWidget *widget, guint horizontal_padding; GtkTextDirection direction; GtkArrowType arrow_type; + PangoContext *context; + PangoFontMetrics *metrics; + gint ascent, descent; + PangoLayout *layout; direction = gtk_widget_get_direction (widget); @@ -732,10 +736,17 @@ gtk_menu_item_paint (GtkWidget *widget, "horizontal_padding", &horizontal_padding, NULL); - gtk_widget_get_child_requisition (GTK_BIN (menu_item)->child, - &child_requisition); + context = gtk_widget_get_pango_context (GTK_BIN (menu_item)->child); + metrics = pango_context_get_metrics (context, + GTK_WIDGET (GTK_BIN (menu_item)->child)->style->font_desc, + pango_context_get_language (context)); + + ascent = pango_font_metrics_get_ascent (metrics); + descent = pango_font_metrics_get_descent (metrics); + pango_font_metrics_unref (metrics); + + arrow_size = PANGO_PIXELS (ascent + descent) - 2 * widget->style->ythickness; - arrow_size = child_requisition.height - 2 * widget->style->ythickness; arrow_extent = arrow_size * 0.8; shadow_type = GTK_SHADOW_OUT; -- 2.30.2